package com.acme.bankapp.domain.bank;

/**
 * Interface which represents method signatures
 * for typical Bank Account
 * 
 * @author render1980
 *
 */
public interface Account {
	/**
	 * Method which gets client account balance
	 * 
	 * @return	account balance
	 */
	double getBalance();
	/**
	 * Method which increment client account balance
	 * on desired value, implementing deposit mechanism
	 * 
	 * @param amount	value on which balance must be increased
	 */
	void deposit(double amount);
	/**
	 * Method which reduces account balance
	 * on desired value
	 * 
	 * @param amount	value which must be deducted
	 * from the account balance 
	 */
	void withdraw(double amount);
	/**
	 * Method which get maximum account balance amount
	 * which client can withdraw
	 * 
	 * @return	value which can be deducted
	 */
	double maximumAmountToWithdraw();
}
